package com.vhall.component.entity.redpacket.vo;

import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @author xianglei
 * @date 2021/3/8
 */
@Data
public class GetListReqVO implements Serializable {

    private static final long serialVersionUID = -5404762912518781183L;

    /**
     * PaaS应用ID
     */
    @NotBlank
    @Size(min = 1, max = 100)
    @ParamName("app_id")
    private String appId;

    /**
     * 第三方业务系统中的来源ID，用来统计数据用
     */
    @NotBlank
    @Size(min = 1, max = 255)
    @ParamName("source_id")
    private String sourceId;

    /**
     * 创建红包的第三方用户ID
     */
    @ParamName("third_party_user_id")
    private String thirdPartyUserId;

    /**
     * 红包支付状态：0 等待支付 1 支付成功 2 支付失败
     */
    @ParamName("pay_status")
    private Integer payStatus;

    /**
     * 红包开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ParamName("start_time")
    private LocalDateTime startTime;

    /**
     * 红包开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ParamName("end_time")
    private LocalDateTime endTime;

    /**
     * 排序类型：asc：正序；	desc：倒序
     */
    @ParamName("sort_type")
    private String sortType = "asc";

    @ParamName("refund_status")
    private Integer refundStatus;

    /**
     * 红包类型：0 随机金额红包（默认），1 均分金额红包
     */
    @Range(min = 0, max = 1, message = "已选的属性 type 非法。")
    private Integer type;

    /**
     * 分页页码 默认不传为第一页
     */
    private Integer page;

    /**
     * 每页显示条数 默认不传为每页显示10条
     */
    @ParamName("page_size")
    private Integer pageSize;

    /**
     * 发送表情类型：1.红包，2.礼品，默认为1
     */
    @ParamName("gift_type")
    @Range(min = 1, max = 2)
    private Integer giftType = 1;
}
